home *** CD-ROM | disk | FTP | other *** search
/ Resource Library: Multimedia / Resource Library: Multimedia.iso / maestro / source / displytl / clipbord.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-06-15  |  4.1 KB  |  142 lines

  1. /*
  2.  * Copyright (c) 1990, 1991, 1992 Stanford University
  3.  *
  4.  * Permission to use, copy, modify, and distribute this software and 
  5.  * its documentation for any purpose is hereby granted without fee, provided
  6.  * that (i) the above copyright notices and this permission notice appear in
  7.  * all copies of the software and related documentation, and (ii) the name
  8.  * Stanford may not be used in any advertising or publicity relating to
  9.  * the software without the specific, prior written permission of
  10.  * Stanford.
  11.  * 
  12.  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
  13.  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
  14.  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
  15.  *
  16.  * IN NO EVENT SHALL STANFORD BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
  17.  * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES
  18.  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT
  19.  * ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY,
  20.  * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
  21.  * SOFTWARE.
  22.  */
  23. /* $Header: /Source/Media/collab/DisplayTool/RCS/clipboard.c,v 1.11 93/02/07 17:50:25 drapeau Exp $ */
  24. /* $Log:    clipboard.c,v $
  25.  * Revision 1.11  93/02/07  17:50:25  drapeau
  26.  * Cosmetic changes, added calls to UpdateHeader() to indicate status of
  27.  * currently open document.
  28.  * 
  29.  * Revision 1.1  92/10/29  13:53:25  drapeau
  30.  * Initial revision
  31.  *  */
  32. static char dtClipboard[] = "$Header: /Source/Media/collab/DisplayTool/RCS/clipboard.c,v 1.11 93/02/07 17:50:25 drapeau Exp $";
  33.  
  34. #include "DisplayTool.h"
  35. #include "externs.h"
  36.  
  37.  
  38. /*
  39.  * Menu handler for `slidesMenu (Copy Slide)'.
  40.  */
  41. Menu_item
  42.   CopySlide(Menu_item item, Menu_generate op)
  43. {
  44.   int i;
  45.   
  46.   if (op == MENU_NOTIFY)
  47.     {
  48.       theCmap = slidesCmap;
  49.       theDisp = display;
  50.       for (i=0; i<numClipboardImages; i++)                /* Erase all images currently in the clipboard */
  51.     FreeImage(clipboardImage[i]); 
  52.       numClipboardImages = 0;
  53.       for (i=0; i < numSlidesImages; i++)
  54.     if (dtImage[i]->slide == selectedSlide)
  55.       {
  56.         clipboardImage[numClipboardImages] = (IMAGE)MyMalloc(sizeof(struct ImageStruct));
  57.         NullFields(clipboardImage[numClipboardImages]);
  58.         CopyImage(dtImage[i], clipboardImage[numClipboardImages]);
  59.         numClipboardImages++;
  60.       }   
  61.     } 
  62.   return item;
  63. }                                    /* end function CopySlide */
  64.  
  65.  
  66. /*
  67.  * Menu handler for `slidesMenu (Cut Slide)'.
  68.  */
  69. Menu_item
  70.   CutSlide(Menu_item item, Menu_generate op)
  71. {
  72.   int i;
  73.   if (op == MENU_NOTIFY)
  74.     {
  75.       CopySlide(baseWindow->baseWindow, MENU_NOTIFY);
  76.       ClearSlide(baseWindow->baseWindow, MENU_NOTIFY);
  77.       for (i=0; i<numSlidesImages; i++)
  78.     if (dtImage[i]->slide > selectedSlide)
  79.       dtImage[i]->slide--;
  80.       changes = True;
  81.       UpdateHeader(True);
  82.       SlidesRepaint(NULL, NULL, NULL, NULL);
  83.       SetTotalNumberOfSlides();
  84.     } 
  85.   return item;
  86. }
  87.  
  88. /*
  89.  * Menu handler for `slidesMenu (Insert Clipboard Slide)'.
  90.  */
  91. Menu_item
  92.   InsertClipboardSlide(Menu_item item, Menu_generate op)
  93. {
  94.   int i;
  95.   if (op == MENU_NOTIFY)
  96.     {
  97.       InsertNewSlide(baseWindow->baseWindow, MENU_NOTIFY);
  98.       for (i=0; i<numClipboardImages; i++)
  99.     {
  100.       if (dtImage[numSlidesImages] == (IMAGE)NULL)
  101.       {
  102.         dtImage[numSlidesImages] = (IMAGE)MyMalloc(sizeof(struct ImageStruct));
  103.         NullFields(dtImage[numSlidesImages]);
  104.       }
  105.       CopyImage(clipboardImage[i], dtImage[numSlidesImages]);
  106.       dtImage[numSlidesImages]->slide = selectedSlide;
  107.       numSlidesImages++;
  108.     }
  109.       changes = True;
  110.       UpdateHeader(True);
  111.       SlidesRepaint(NULL, NULL, NULL, NULL);
  112.       SetTotalNumberOfSlides();
  113.     } 
  114.   return item;
  115. }
  116.  
  117. /*
  118.  * Menu handler for `slidesMenu (Clear Slide)'.
  119.  */
  120. Menu_item
  121.   ClearSlide(Menu_item    item, Menu_generate op)
  122. {
  123.   int i, j = 0;
  124.   if (op == MENU_NOTIFY)
  125.     {
  126.       theCmap = slidesCmap;
  127.       theDisp = display;
  128.       for (i=0; i<numSlidesImages; i++)
  129.     if (dtImage[i]->slide != selectedSlide)
  130.       dtImage[j++] = dtImage[i]; 
  131.     else
  132.       FreeImage(dtImage[i]);
  133.       numSlidesImages = j;
  134.       if ((int)item != (int)baseWindow->baseWindow)
  135.     SlidesRepaint(NULL, NULL, NULL, NULL);
  136.       changes = True;
  137.       UpdateHeader(True);
  138.       SetTotalNumberOfSlides();
  139.     } 
  140.   return item;
  141. }
  142.